package com.tms.utils.description.impl;

import com.tms.domain.*;
import com.tms.utils.description.DescriptionService;
import org.springframework.stereotype.Service;

import static com.tms.core.constants.StatusConstants.USE_RECORD_IN;
import static com.tms.core.constants.StatusConstants.USE_RECORD_OUT;

/**
 * @author ozj jackie
 * @date 2020年6月30日
 */
@Service
public class DescriptionServiceImpl implements DescriptionService {

    /**
     * 获取维修记录的描叙
     *
     * @param repairApp 维修记录
     * @return string
     */
    @Override
    public String getDescription(RepairApp repairApp) {
        String description = "";
        switch (repairApp.getStatus().getId()) {
            case 1:
                description = String.format("%s在%tF %<tT提交报修申请，申请id为%d",
                        repairApp.getSubPerson().getName(), repairApp.getSubTime(), repairApp.getId());
                break;
            case 2:
                description = String.format("%s在%tF %<tT处理报修申请，申请id为%d",
                        repairApp.getCheckPerson().getName(), repairApp.getCheckTime(), repairApp.getId());
                break;
            case 5:
                description = String.format("%s在%tF %<tT关闭报修申请，申请id为%d",
                        repairApp.getCheckPerson().getName(), repairApp.getCheckTime(), repairApp.getId());
                break;
            default:
                break;
        }
        return description;
    }

    /**
     * 获取报废记录的描叙
     *
     * @param scrap 报废记录
     * @return string
     */
    @Override
    public String getDescription(Scrap scrap) {
        String description = "";
        switch (scrap.getStatus().getId()) {
            case 0:
                description = String.format("%s在%tF %<tT提交报废申请，申请id为%d", scrap.getSubPerson().getName(), scrap.getSubTime(), scrap.getId());
                break;
            case 1:
                description = String.format("%s在%tF %<tT初审报废申请，审核未通过，申请id为%d，提交人为%s",
                        scrap.getFirstPerson().getName(), scrap.getFirstTime(), scrap.getId(), scrap.getSubPerson().getName());
                break;
            case 2:
                description = String.format("%s在%tF %<tT初审报废申请，审核通过，申请id为%d，提交人为%s",
                        scrap.getFirstPerson().getName(), scrap.getFirstTime(), scrap.getId(), scrap.getFirstPerson().getName());
                break;
            case 3:
                description = String.format("%s在%tF %<tT终审报废申请，审核未通过，申请id为%d，提交人为%s，初审人为%s",
                        scrap.getSecondPerson().getName(), scrap.getSecondTime(), scrap.getId(), scrap.getSubPerson().getName(), scrap.getFirstPerson().getName());
                break;
            case 4:
                description = String.format("%s在%tF %<tT终审报废申请，审核通过，申请id为%d，提交人为%s，初审人为%s",
                        scrap.getSecondPerson().getName(), scrap.getSecondTime(), scrap.getId(), scrap.getSubPerson().getName(), scrap.getFirstPerson().getName());
                break;
            default:
                break;
        }
        return description;
    }

    /**
     * 获取使用记录的描叙
     *
     * @param useRecord 使用记录
     * @return string
     */
    @Override
    public String getDescription(UseRecord useRecord) {
        if (useRecord.getStatus().getId() == USE_RECORD_OUT.getStatus()) {
            return String.format("%s在%tF %<tT取出放在%s、id为%d的夹具到%s生产线，记录者为%s", useRecord.getStaff().getName(), useRecord.getTime(),
                    useRecord.getLocation().getName(), useRecord.getId(), useRecord.getProductLine().getName(), useRecord.getRecorder().getName());
        } else if (useRecord.getStatus().getId() == USE_RECORD_IN.getStatus()) {
            return String.format("%s在%tF %<tT放回在%s生产线上使用的id为%d的夹具到%s，记录者为%s", useRecord.getStaff().getName(), useRecord.getTime(),
                    useRecord.getProductLine().getName(), useRecord.getId(), useRecord.getLocation().getName(), useRecord.getRecorder().getName());
        }
        return "";
    }

    /**
     * 获取采购记录的描叙
     *
     * @param bill 采购记录
     * @return string
     */
    @Override
    public String getDescription(Bill bill) {
        String description = "";
        switch (bill.getStatus().getId()) {
            case 0:
                description = String.format("%s在%tF %<tT提交采购申请，申请id为%d", bill.getSubPerson().getName(), bill.getSubTime(), bill.getId());
                break;
            case 1:
                description = String.format("%s在%tF %<tT初审采购申请，审核未通过，申请id为%d，提交人为%s",
                        bill.getFirstPerson().getName(), bill.getFirstTime(), bill.getId(), bill.getSubPerson().getName());
                break;
            case 2:
                description = String.format("%s在%tF %<tT初审采购申请，审核通过，申请id为%d，提交人为%s",
                        bill.getFirstPerson().getName(), bill.getFirstTime(), bill.getId(), bill.getFirstPerson().getName());
                break;
            case 3:
                description = String.format("%s在%tF %<tT终审采购申请，审核未通过，申请id为%d，提交人为%s，初审人为%s",
                        bill.getSecondPerson().getName(), bill.getSecondTime(), bill.getId(), bill.getSubPerson().getName(), bill.getFirstPerson().getName());
                break;
            case 4:
                description = String.format("%s在%tF %<tT终审采购申请，审核通过，申请id为%d，提交人为%s，初审人为%s",
                        bill.getSecondPerson().getName(), bill.getSecondTime(), bill.getId(), bill.getSubPerson().getName(), bill.getFirstPerson().getName());
                break;
            default:
                break;
        }
        return description;
    }

    /**
     * 获取采购记录的描叙
     *
     * @param bill 采购记录
     * @return string
     */
    @Override
    public String getDescription(BillResponse bill) {
        String description = "";
        switch (bill.getStatus().getId()) {
            case 0:
                description = String.format("%s在%tF %<tT提交采购申请，申请id为%d", bill.getSubmitPerson().getName(), bill.getSubmitTime(), bill.getId());
                break;
            case 1:
                description = String.format("%s在%tF %<tT初审采购申请，审核未通过，申请id为%d，提交人为%s",
                        bill.getFirstPerson().getName(), bill.getFirstTime(), bill.getId(), bill.getSubmitPerson().getName());
                break;
            case 2:
                description = String.format("%s在%tF %<tT初审采购申请，审核通过，申请id为%d，提交人为%s",
                        bill.getFirstPerson().getName(), bill.getFirstTime(), bill.getId(), bill.getFirstPerson().getName());
                break;
            case 3:
                description = String.format("%s在%tF %<tT终审采购申请，审核未通过，申请id为%d，提交人为%s，初审人为%s",
                        bill.getSecondPerson().getName(), bill.getSecondTime(), bill.getId(), bill.getSubmitPerson().getName(), bill.getFirstPerson().getName());
                break;
            case 4:
                description = String.format("%s在%tF %<tT终审采购申请，审核通过，申请id为%d，提交人为%s，初审人为%s",
                        bill.getSecondPerson().getName(), bill.getSecondTime(), bill.getId(), bill.getSubmitPerson().getName(), bill.getFirstPerson().getName());
                break;
            default:
                break;
        }
        return description;
    }

}
